Java-Sicherheit: Richtlinien und Berechtigungen besser verwalten

Vor geraumer Zeit hat ZDNet die Architektur des Java-Sicherheitsmodells vorgestellt. Dieses Mal geht es um weitere Aspekte der Java-Sicherheit: Sicherheits-Manager, Zugriff-Controller und Zugriffsberechtigungen.

Der Sicherheits-Manager (Security-Manager)

Der Sicherheits-Manager ist eine spezielle Klasse, die angibt, ob eine Klasse Zugriff auf eine bestimmte Ressource hat, etwa über direkten Dateizugriff oder eine Netzwerkverbindung. Um eine solche Entscheidung zu treffen, analysiert der Sicherheits-Manager die Quelle der Anfrage. Falls der Zugriff verweigert wird, löst das einen Ausnahmefehler aus (java.lang.SecurityException). Andernfalls wird der Aufruf wie üblich verarbeitet.

Jeder Prozess der JVM (Java Virtual Machine) erlaubt nur genau einen Sicherheits-Manager. Darüber hinaus lässt sich die JVM so konfigurieren, dass ein Austausch des Sicherheits-Managers nach dessen Erstellung nicht mehr zulässig ist. In diesem Fall existiert er ebenso lange wie die JVM selbst. Viele in Browsern integrierte JVMs erstellen einen einzelnen Sicherheits-Manager, ehe das erste Java-Applet geladen wird. Damit kann das Java-Applet eines Hackers den standardmäßigen Sicherheits-Manager eines Browsers nicht ersetzen. Ein unautorisierter Zugriff auf Systemressourcen wird somit vermieden.

In Java 2 ist das Erstellen eines eigenen Sicherheits-Managers wesentlich einfacher als in den bisherigen Versionen von Java. Denn der standardmäßige Sicherheits-Manager lässt sich konfigurieren. Falls er dann Verwendung finden soll, muss es der JVM mit einer Systemeigenschaft über die Befehlszeile mitgeteilt werden. Das geschieht wie folgt:


java -Djava.security.managerMyApplication
java -Djava.security.manager=default MyApplication

Die Klasse java.lang.SecurityManager verkapselt wichtige Features zur Interaktion der Anwendung mit dem Sicherheits-Manager im Gültigkeitsbereich der gerade laufenden JVM. Die Methode java.lang.System.getSecurityManager() liefert eine Referenz auf das aktuelle SecurityManager-Objekt. Falls dieses nicht vorhanden ist, wird ein Null-Wert zurückgegeben. Mit der Methode java.lang.System.setSecurityManager() lässt sich ein eigener Sicherheits-Manager einstellen. Falls die Installation nicht erlaubt ist, wird eine SecurityException ausgelöst.

Die SecurityManager-Klasse enthält viele öffentliche Methoden der Form checkXXX(). Jede Methode überprüft, ob der Zugriff auf eine entsprechende Ressource erlaubt ist. Bei Verweigerung wird wiederum eine SecurityException ausgelöst.

Die Methode checkPermission() kombiniert alle checkXXX()-Methoden. In Java-2-Implementierungen löst jeder Aufruf einer checkXXX()-Methode zugleich einen Aufruf von checkPermission() aus. Die checkPermission()-Methode ruft wiederum dieselbe Methode in der Klasse java.security.AccessController auf.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Black Friday: Vorsicht vor schädlichen QR-Codes

Bösartige QR-Codes, die per E-Mail versendet werden, eignen sich sehr gut, um Spam-Filter zu umgehen.

24 Stunden ago

Black Friday: Zahl der ominösen Shopping-Websites steigt

Unsichere Websites und Phishing-Mails in Verbindung mit Black Friday können kauffreudigen Konsumenten zum Verhängnis werden.

24 Stunden ago

SmokeBuster bekämpft SmokeLoader

Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.

1 Tag ago

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

2 Tagen ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

2 Tagen ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

2 Tagen ago